/**
 * 设备检测工具
 * 用于检测当前环境是否为移动设备，并支持视口变化监听
 */

// 存储所有注册的视口变化监听器
const viewportChangeListeners = [];

/**
 * 检测当前是否为移动端视口
 * @returns {boolean} 如果是移动视口返回true，否则返回false
 */
export function isMobileViewport() {
  return window.innerWidth < 768;
}

/**
 * 添加视口变化监听器
 * @param {Function} listener 监听函数，接收isMobile布尔参数
 */
export function addViewportChangeListener(listener) {
  if (typeof listener === 'function') {
    // 先执行一次初始状态
    listener(isMobileViewport());
    viewportChangeListeners.push(listener);
  }
}

/**
 * 移除视口变化监听器
 * @param {Function} listener 要移除的监听函数
 */
export function removeViewportChangeListener(listener) {
  const index = viewportChangeListeners.indexOf(listener);
  if (index !== -1) {
    viewportChangeListeners.splice(index, 1);
  }
}

// 添加resize事件监听器，通知所有注册的监听器
window.addEventListener('resize', () => {
  const isMobile = isMobileViewport();
  viewportChangeListeners.forEach(listener => {
    listener(isMobile);
  });
});

/**
 * 检测是否为触摸设备
 * @returns {boolean} 如果是触摸设备返回true，否则返回false
 */
export function isTouchDevice() {
  return ('ontouchstart' in window) || 
    (navigator.maxTouchPoints > 0) || 
    (navigator.msMaxTouchPoints > 0);
} 